#*************              NHANES           *************
#*************      权重重要性讲解演示代码   *************
#*************                               *************

#### 0.准备好环境 ####

#下载读取xpt文件的R包“haven”并载入
#install.packages("haven") # 下载一次后无需再次下载，可以在代码前加入 # 将代码转换为注释
library(haven)
library(tableone)


#下载用于数据处理包 dplyr, plyr
#install.packages('plyr') # 下载一次后无需再次下载，可以在代码前加入 # 将代码转换为注释
library(plyr)
#install.packages('dplyr') # 下载一次后无需再次下载，可以在代码前加入 # 将代码转换为注释
library(dplyr) # 链接：https://dplyr.tidyverse.org/reference/mutate.html


#下载用于数据快速预览的包 arsenal，使用 tableby 函数
# install.packages('arsenal') # 下载一次后无需再次下载，可以在代码前加入 # 将代码转换为注释
library(arsenal) # 链接：https://cran.r-project.org/web/packages/arsenal/vignettes/tableby.html

#用于加权情况下的分析
library(survey)

setwd("G:/BaiduNetdiskDownload/NHANES/")

#### 1.提取数据 ####
### 1.1 提取数据模块
demo.i <- read_xpt("2015-2016/Demographics/demo_i.xpt")#参见上述设置默认路径
# colnames(demo.i)

### 1.2 提取变量
weight.data.2015 <- demo.i[,c('SEQN', 'RIDRETH3', "WTINT2YR", "SDMVPSU", "SDMVSTRA")]
# View(weight.data.2015)
#### 2.复现不带权重的分析 ####
summary(tableby( ~ factor(RIDRETH3), data = weight.data.2015) ,text =T)

# 1	Mexican American	1355	1355	 0.19
# 2	Other Hispanic	1076	2431	0.13
# 3	Non-Hispanic White	2973	5404  0.31	
# 4	Non-Hispanic Black	2683	8087  0.21	✅  21.4
# 6	Non-Hispanic Asian	1282	9369  0.10	✅  10.5
# 7	Other Race - Including Multi-Racial	387	9756  0.05 

# 3+7: Non-Hispanic White and others : 3	Non-Hispanic White(0.31) + 7	Other Race(0.05)  	✅  35.8 

# 1+2: Hispanic：1	Mexican American(0.19) + 2	Other Hispanic(0.13)  ✅ 32.4 
# 拉丁裔，又译为“拉美裔，西班牙语裔，西语裔”，
# 美国拉丁裔全称西班牙裔和拉丁裔美国人（英语：Hispanic and Latino Americans），
# 以墨西哥裔美国人为主的族群. 

weight.data.2015$new.reth <- recode_factor(weight.data.2015$RIDRETH3, 
                                           `1` = "Hispanic",
                                           `2` = "Hispanic", 
                                           `3` = "Non-Hispanic White and others",
                                           `4` = "Non-Hispanic Black",
                                           `6` = "Non-Hispanic Asian",
                                           `7` = "Non-Hispanic White and others")
# 复现不加权重的种族比例
summary(tableby(~new.reth, data = weight.data.2015),text=T)

asd<-ddply(weight.data.2015, .(new.reth), summarise, 
      `Sum(WTINT2YR)` = sum(WTINT2YR), 
      `Avg(WTINT2YR)` = mean(WTINT2YR), 
      n = length(SEQN),
      ratio = round(n/(dim(weight.data.2015)[1]), 2)
)
summary(asd)


#### 3.复现带权重的分析 ####
#

NHANES_design <- svydesign(
  data = weight.data.2015, 
  ids = ~SDMVPSU,  #SDMVPSU 无论使用任何一个权重变量 是一个主要采样单元
  strata = ~SDMVSTRA,  #分层 把人口换划分为不同的群体
  nest = TRUE, 
  weights = ~WTINT2YR #权重变量
)
summary(NHANES_design)



#是复现
svytable(~new.reth, design = NHANES_design) %>%
  as.data.frame() %>%
  mutate(prop = Freq / sum(Freq) * 100) %>%
  arrange(desc(prop))



